<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/uapi/asm/e820.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/arch/x86/include/uapi/asm/e820.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X1VBUElfQVNNX1g4Nl9FODIwX0hfMA__"><span class="b">_UAPI_ASM_X86_E820_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X1VBUElfQVNNX1g4Nl9FODIwX0hfMA__"><span class="b">_UAPI_ASM_X86_E820_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RTgyME1BUF8w"><span class="b">E820MAP</span></a>    <span class="c">0x2d0</span>        <span class="k">/* our map */</span>
<a name="4" /><span class="Maybe">       4:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_RTgyME1BWF8w"><span class="b">E820MAX</span></a>    <span class="c">128</span>        <span class="k">/* number of entries in E820MAP */</span>
<a name="5" /><span class="Maybe">       5:</span> 
<a name="6" /><span class="Maybe">       6:</span> <span class="k">/*</span>
<a name="7" /><span class="Maybe">       7:</span> <span class="k"> * Legacy E820 BIOS limits us to 128 (E820MAX) nodes due to the</span>
<a name="8" /><span class="Maybe">       8:</span> <span class="k"> * constrained space in the zeropage.  If we have more nodes than</span>
<a name="9" /><span class="Maybe">       9:</span> <span class="k"> * that, and if we&apos;ve booted off EFI firmware, then the EFI tables</span>
<a name="10" /><span class="Maybe">      10:</span> <span class="k"> * passed us from the EFI firmware can list more nodes.  Size our</span>
<a name="11" /><span class="Maybe">      11:</span> <span class="k"> * internal memory map tables to have room for these additional</span>
<a name="12" /><span class="Maybe">      12:</span> <span class="k"> * nodes, based on up to three entries per node for which the</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="k"> * kernel was built: MAX_NUMNODES == (1 &lt;&lt; CONFIG_NODES_SHIFT),</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="k"> * plus E820MAX, allowing space for the possible duplicate E820</span>
<a name="15" /><span class="Maybe">      15:</span> <span class="k"> * entries that might need room in the same arrays, prior to the</span>
<a name="16" /><span class="Maybe">      16:</span> <span class="k"> * call to sanitize_e820_map() to remove duplicates.  The allowance</span>
<a name="17" /><span class="Maybe">      17:</span> <span class="k"> * of three memory map entries per node is &quot;enough&quot; entries for</span>
<a name="18" /><span class="Maybe">      18:</span> <span class="k"> * the initial hardware platform motivating this mechanism to make</span>
<a name="19" /><span class="Maybe">      19:</span> <span class="k"> * use of additional EFI map entries.  Future platforms may want</span>
<a name="20" /><span class="Maybe">      20:</span> <span class="k"> * to allow more than three entries per node or otherwise refine</span>
<a name="21" /><span class="Maybe">      21:</span> <span class="k"> * this size.</span>
<a name="22" /><span class="Maybe">      22:</span> <span class="k"> */</span>
<a name="23" /><span class="Maybe">      23:</span> 
<a name="24" /><span class="Maybe">      24:</span> <span class="k">/*</span>
<a name="25" /><span class="Maybe">      25:</span> <span class="k"> * Odd: &apos;make headers_check&apos; complains about numa.h if I try</span>
<a name="26" /><span class="Maybe">      26:</span> <span class="k"> * to collapse the next two #ifdef lines to a single line:</span>
<a name="27" /><span class="Maybe">      27:</span> <span class="k"> *    #if defined(__KERNEL__) &amp;&amp; defined(CONFIG_EFI)</span>
<a name="28" /><span class="Maybe">      28:</span> <span class="k"> */</span>
<a name="29" /><span class="False">      29:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X19LRVJORUxfX18w"><span class="b">__KERNEL__</span></a>
<a name="30" /><span class="False">      30:</span> <span class="f">#</span><span class="n">define</span> <span class="b">E820_X_MAX</span> <a href="cpu.c_macros_ref.html#_RTgyME1BWF8w"><span class="b">E820MAX</span></a>
<a name="31" /><span class="Maybe">      31:</span> <span class="f">#</span><span class="n">endif</span>
<a name="32" /><span class="Maybe">      32:</span> 
<a name="33" /><span class="Maybe">      33:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RTgyME5SXzA_"><span class="b">E820NR</span></a>    <span class="c">0x1e8</span>        <span class="k">/* # entries in E820MAP */</span>
<a name="34" /><span class="Maybe">      34:</span> 
<a name="35" /><span class="Maybe">      35:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RTgyMF9SQU1fMA__"><span class="b">E820_RAM</span></a>    <span class="c">1</span>
<a name="36" /><span class="Maybe">      36:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RTgyMF9SRVNFUlZFRF8w"><span class="b">E820_RESERVED</span></a>    <span class="c">2</span>
<a name="37" /><span class="Maybe">      37:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RTgyMF9BQ1BJXzA_"><span class="b">E820_ACPI</span></a>    <span class="c">3</span>
<a name="38" /><span class="Maybe">      38:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RTgyMF9OVlNfMA__"><span class="b">E820_NVS</span></a>    <span class="c">4</span>
<a name="39" /><span class="Maybe">      39:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RTgyMF9VTlVTQUJMRV8w"><span class="b">E820_UNUSABLE</span></a>    <span class="c">5</span>
<a name="40" /><span class="Maybe">      40:</span> 
<a name="41" /><span class="Maybe">      41:</span> 
<a name="42" /><span class="Maybe">      42:</span> <span class="k">/*</span>
<a name="43" /><span class="Maybe">      43:</span> <span class="k"> * reserved RAM used by kernel itself</span>
<a name="44" /><span class="Maybe">      44:</span> <span class="k"> * if CONFIG_INTEL_TXT is enabled, memory of this type will be</span>
<a name="45" /><span class="Maybe">      45:</span> <span class="k"> * included in the S3 integrity calculation and so should not include</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="k"> * any memory that BIOS might alter over the S3 transition</span>
<a name="47" /><span class="Maybe">      47:</span> <span class="k"> */</span>
<a name="48" /><span class="Maybe">      48:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RTgyMF9SRVNFUlZFRF9LRVJOXzA_"><span class="b">E820_RESERVED_KERN</span></a>        <span class="c">128</span>
<a name="49" /><span class="Maybe">      49:</span> 
<a name="50" /><span class="Maybe">      50:</span> <span class="f">#</span><span class="n">ifndef</span> <span class="b">__ASSEMBLY__</span>
<a name="51" /><span class="Maybe">      51:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="m">struct</span> <span class="b">e820entry</span> <span class="f">{</span>
<a name="53" /><span class="Maybe">      53:</span>     <span class="b">__u64</span> <span class="b">addr</span><span class="f">;</span>    <span class="k">/* start of memory segment */</span>
<a name="54" /><span class="Maybe">      54:</span>     <span class="b">__u64</span> <span class="b">size</span><span class="f">;</span>    <span class="k">/* size of memory segment */</span>
<a name="55" /><span class="Maybe">      55:</span>     <span class="b">__u32</span> <span class="b">type</span><span class="f">;</span>    <span class="k">/* type of memory segment */</span>
<a name="56" /><span class="Maybe">      56:</span> <span class="f">}</span> <span class="b">__attribute__</span><span class="f">(</span><span class="f">(</span><span class="b">packed</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="57" /><span class="Maybe">      57:</span> 
<a name="58" /><span class="Maybe">      58:</span> <span class="m">struct</span> <span class="b">e820map</span> <span class="f">{</span>
<a name="59" /><span class="Maybe">      59:</span>     <span class="b">__u32</span> <span class="b">nr_map</span><span class="f">;</span>
<a name="60" /><span class="Maybe">      60:</span>     <span class="m">struct</span> <span class="b">e820entry</span> <span class="b">map</span><span class="f">[</span><span class="b">E820_X_MAX</span><span class="f">]</span><span class="f">;</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="f">}</span><span class="f">;</span>
<a name="62" /><span class="Maybe">      62:</span> 
<a name="63" /><span class="Maybe">      63:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVNBX1NUQVJUX0FERFJFU1NfMA__"><span class="b">ISA_START_ADDRESS</span></a>    <span class="c">0xa0000</span>
<a name="64" /><span class="Maybe">      64:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SVNBX0VORF9BRERSRVNTXzA_"><span class="b">ISA_END_ADDRESS</span></a>        <span class="c">0x100000</span>
<a name="65" /><span class="Maybe">      65:</span> 
<a name="66" /><span class="Maybe">      66:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_QklPU19CRUdJTl8w"><span class="b">BIOS_BEGIN</span></a>        <span class="c">0x000a0000</span>
<a name="67" /><span class="Maybe">      67:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_QklPU19FTkRfMA__"><span class="b">BIOS_END</span></a>        <span class="c">0x00100000</span>
<a name="68" /><span class="Maybe">      68:</span> 
<a name="69" /><span class="Maybe">      69:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_QklPU19ST01fQkFTRV8w"><span class="b">BIOS_ROM_BASE</span></a>        <span class="c">0xffe00000</span>
<a name="70" /><span class="Maybe">      70:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_QklPU19ST01fRU5EXzA_"><span class="b">BIOS_ROM_END</span></a>        <span class="c">0xffffffff</span>
<a name="71" /><span class="Maybe">      71:</span> 
<a name="72" /><span class="Maybe">      72:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* __ASSEMBLY__ */</span>
<a name="73" /><span class="Maybe">      73:</span> 
<a name="74" /><span class="Maybe">      74:</span> 
<a name="75" /><span class="True">      75:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* _UAPI_ASM_X86_E820_H */</span>
<a name="76" /><span class="True">      76:</span> </pre>
  </body>
</html>
